package main

import (
	"fmt"
	"math"
	"math/cmplx"
)
//
//var aa = 3  //包内部变量
//var ss = "hhhh"
//var bb = true

var(
	aa = 2
	bb = 3
	cc = "省略var 关键字"
)


func variable(){
	var a int
	var b string

	fmt.Printf("%d %q\n",a,b)

}

func var2(){
	a,b,c,d := 1,2,"hello",false;
	fmt.Println(a,b,c,d)
}
//欧拉公式
func euler(){
	c :=3+4i
	fmt.Println(cmplx.Abs(c))
}

func tringle()  {
	var a,b int = 3,2
	var c int
	c = int(math.Sqrt(float64(a*a+b*b)))//类型转换
	fmt.Println(c)
}


func consts(){
	const filename  =  "1.txt"
	const(
		a = 1
		b =2
		)
	fmt.Println(a,b)
}

func enums(){
	const(
		cpp = iota
		_
		python
		java
		javascript
	)

	const(
		//iota 用来做运算表达式 自增的一个操作
		dd = 1 << (10*iota)
		ee
		ff
		gg
	)


	fmt.Println(dd,ee,ff,gg)
	fmt.Println(cpp,java,python,javascript)
}

/**
变量类型
	变量类型卸载变量名之后
	aa int = 1

	编译器可推测变量类型

	没有char,只有rune

	原生支持复数类型
 */



func main() {
	fmt.Println("hello world")
	variable()
	var2()
	fmt.Println(aa,bb,cc)
	euler()
	tringle()
	consts()
	enums()

}
